# 使用官方 Node.js 18 Alpine 镜像作为基础镜像
FROM node:18-alpine

# 设置维护者信息
LABEL maintainer="Snake Game Team"
LABEL description="多人贪吃蛇大作战游戏服务器"
LABEL version="2.0.0"

# 安装必要的系统依赖
RUN apk add --no-cache \
    curl \
    bash \
    && rm -rf /var/cache/apk/*

# 设置工作目录
WORKDIR /app

# 复制 package.json 和 package-lock.json（如果存在）
COPY package*.json ./

# 安装 Node.js 依赖
# 使用 npm ci 进行更快、更可靠的安装
RUN npm ci --only=production && \
    npm cache clean --force

# 复制应用程序源代码
COPY . .

# 创建非 root 用户以提高安全性
RUN addgroup -g 1001 -S nodejs && \
    adduser -S gameuser -u 1001 -G nodejs

# 创建日志目录
RUN mkdir -p /app/logs && \
    chown -R gameuser:nodejs /app

# 设置脚本权限
RUN chmod +x start.sh

# 切换到非 root 用户
USER gameuser

# 暴露应用程序端口
EXPOSE 13000

# 设置环境变量
ENV NODE_ENV=production
ENV PORT=13000

# 健康检查
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
    CMD curl -f http://localhost:13000/ || exit 1

# 启动应用程序
CMD ["node", "server.js"]